#include "widget.h"
#include "ui_widget.h"
#include <QPixmap>
#include <QPainter>
#include <QImage>
#include <QPicture>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

//    QPixmap pix(300,300); //Pixmap绘图设备 专门为平台做了显示的优化
//    pix.fill(Qt::white); //填充颜色
//    QPainter painter(&pix); //栈 实例化画家并指定绘图设备
//    painter.setPen(QPen(Qt::green));
//    painter.drawEllipse(QPoint(150,150) , 100,100);
//    pix.save("E:\\pix.png"); //保存

//    QImage img(300,300,QImage::Format_RGB32); //QImage 绘图设备  可以对像素进行访问
//    img.fill(Qt::white); //填充颜色
//    QPainter painter(&img); //栈 实例化画家并指定绘图设备
//    painter.setPen(QPen(Qt::blue));
//    painter.drawEllipse(QPoint(150,150) , 100,100);
//    img.save("E:\\img.png"); //保存

    QPicture pic; //QPicture 绘图设备  可以记录和重现 绘图指令
    QPainter painter; //先不指定绘图设备
    painter.begin(&pic);  //指定绘图设备 开始往pic上画
    painter.setPen(QPen(Qt::cyan));
    painter.drawEllipse(QPoint(150,150) , 100,100);
    painter.end(); //结束画画
    pic.save("E:\\pic.zt"); //保存到磁盘
}

//绘图事件
void Widget::paintEvent(QPaintEvent *)
{
//    QPainter painter(this);
//    QImage img; //利用QImage 对像素进行修改
//    img.load(":/Image/Luffy.png"); //加载图片
//    //修改图片内的部分像素点
//    for(int i = 50 ;i < 100 ; i++) {
//        for(int j = 50 ; j < 100;j++) {
//            QRgb value = qRgb(255,0,0);
//            img.setPixel(i,j,value);
//        }
//    }
//    painter.drawImage(0,0,img);

    QPainter painter(this);
    QPicture pic; //重现QPicture的绘图指令
    pic.load("E:\\pic.zt");
    painter.drawPicture(0,0,pic);
}


Widget::~Widget()
{
    delete ui;
}
